//
//  UIManager.h
//  Mecca
//
//  Created by Ryan Enguero on 5/20/14.
//  Copyright (c) 2014 TapDash Heuristics. All rights reserved.
//

#import <Foundation/Foundation.h>

#import "IIViewDeckController.h"

@class LoginViewController;
@class RegisterViewController;
@class NewsFeedViewController;
@class TopDownloadedViewController;
@class PlayListViewController;
@class EventsViewController;
@class FavoritesViewController;
@class ArtistViewController;
@class AlbumViewController;
@class LiveStreamViewController;
@class SchedulesViewController;
@class PhotosViewController;
@class SongsViewController;
@class PlaySongViewController;
@class UserProfileViewController;
@class RotationTabViewController;
@class IIViewDeckController;
@class PlaySongListViewController;
@class EditProfileViewController;
@class HomePageViewController;
@class FeaturedArtistViewController;
@class FeaturedSongsViewController;
@class NewArtistViewController;
@class NewSongsViewController;
@class AOTMViewController;
@class NewsFeedContentViewController;
@class ScanQRViewController;




@interface UIManager : NSObject <UINavigationControllerDelegate>

@property (strong, nonatomic) LoginViewController *loginView;
@property (strong, nonatomic) RegisterViewController *registerView;
@property (strong, nonatomic) NewsFeedViewController *newsFeedView;
@property (strong, nonatomic) TopDownloadedViewController *topDownloadedView;
@property (strong, nonatomic) PlayListViewController *playListView;
@property (strong, nonatomic) EventsViewController *eventsView;
@property (strong, nonatomic) FavoritesViewController *favoritesView;
@property (strong, nonatomic) ArtistViewController *artistView;
@property (strong, nonatomic) AlbumViewController *albumView;
@property (strong, nonatomic) LiveStreamViewController *liveStreamView;
@property (strong, nonatomic) SchedulesViewController *schedulesView;
@property (strong, nonatomic) PhotosViewController *photosView;
@property (strong, nonatomic) SongsViewController *songsView;
@property (strong, nonatomic) PlaySongViewController *playSongView;
@property (strong, nonatomic) UserProfileViewController *userProfileView;
@property (strong, nonatomic) PlaySongListViewController *playSongListView;
@property (strong, nonatomic) RotationTabViewController *rotationView;
@property (strong, nonatomic) IIViewDeckController *viewDeck;
@property (strong, nonatomic) IIViewDeckController* deckController;
@property (strong, nonatomic) EditProfileViewController *editProfileView;
@property (strong, nonatomic) HomePageViewController *homePageView;
@property (strong, nonatomic) AOTMViewController *artistOfTheMonthView;
@property (strong, nonatomic) FeaturedArtistViewController *featuredArtistView;
@property (strong, nonatomic) FeaturedSongsViewController *featuredSongsView;
@property (strong, nonatomic) NewArtistViewController *nArtistView;
@property (strong, nonatomic) NewSongsViewController *nSongsView;
@property (strong, nonatomic) NewsFeedContentViewController *newsFeedContentView;
@property (strong, nonatomic) ScanQRViewController *scanView;



- (UIViewController*)loginViewController;

- (UINavigationController*)navWithLogin;

- (UIViewController*)registerViewController;

- (UIViewController*)albumViewController;

- (UIViewController*)songsViewController;

- (UIViewController*)playSong;

- (UIViewController*)newsFeedViewController;

- (UIViewController*)artistViewController;

- (UIViewController*)topDownloadedViewController;

- (UINavigationController*)playListViewController;

- (UIViewController*)eventsViewController;

- (UIViewController*)favoritesViewController;

- (UITabBarController*)artistTabBars;

- (UIViewController*)playSongListViewController;

- (UIViewController*)editProfileViewController;

- (UIViewController*)homePageViewController;

// New View Controllers

- (UIViewController*)artistOfTheMonthViewController;

- (UIViewController*)featuredArtistViewController;

- (UIViewController*)featuredSongsViewController;


- (UIViewController*)newArtistViewController;

- (UIViewController*)newSongsViewController;

- (UIViewController*)newsFeedContentViewController;

- (UIViewController*)scanViewController;


- (IIViewDeckController*)generateControllerStack;


- (BOOL)toggleLeftView;
- (BOOL)openLeftView;
- (BOOL)closeLeftView;
- (BOOL)toggleLeftViewAnimated:(BOOL)animated;
- (BOOL)toggleLeftViewAnimated:(BOOL)animated completion:(IIViewDeckControllerBlock)completed;
- (BOOL)openLeftViewAnimated:(BOOL)animated;
- (BOOL)openLeftViewAnimated:(BOOL)animated completion:(IIViewDeckControllerBlock)completed;
- (BOOL)openLeftViewBouncing:(IIViewDeckControllerBounceBlock)bounced;
- (BOOL)openLeftViewBouncing:(IIViewDeckControllerBounceBlock)bounced completion:(IIViewDeckControllerBlock)completed;
- (BOOL)closeLeftViewAnimated:(BOOL)animated;
- (BOOL)closeLeftViewAnimated:(BOOL)animated completion:(IIViewDeckControllerBlock)completed;
- (BOOL)closeLeftViewAnimated:(BOOL)animated duration:(NSTimeInterval)duration completion:(IIViewDeckControllerBlock)completed;
- (BOOL)closeLeftViewBouncing:(IIViewDeckControllerBounceBlock)bounced;
- (BOOL)closeLeftViewBouncing:(IIViewDeckControllerBounceBlock)bounced completion:(IIViewDeckControllerBlock)completed;

- (void)openLeft;
- (void)closeLeft;
- (void)openRight;
- (void)logOut;


+ (UIManager *) sharedItems;

@end
